let path = require('path');
let html = require('html-webpack-plugin')
let {CleanWebpackPlugin} = require('clean-webpack-plugin')
let webpack = require('webpack')
let MyPlugin = require('./my/myplugin') 

module.exports = {
  entry:'./src/index.js',
  output:{
    filename:'index.[hash:5].js',
    path:path.resolve(__dirname,'dist')
  },
  // devtool:"cheap-module-source-map ",// 有助于调试
  plugins:[
    new MyPlugin({
      a:123,
      b:234
    }),
    new webpack.DllReferencePlugin({
      // 在打包编译的时候 先去清单（manifest.json） 中查看有没有这个包
      // 若有 直接跳过 不用再打包
      // 没有的时候 才到这个对应的包
      manifest:path.resolve(__dirname,'./dist/manifest.json')
    }),
    new CleanWebpackPlugin({
      cleanOnceBeforeBuildPatterns:["**/*","!dll_*","!mani*"]
    }),
    new html({
      template:"./public/index.html",
      filename:'index.html'
    }),
    new webpack.DefinePlugin({
      // BASEURL:true,
      BASEURL2:JSON.stringify("true"),
      BASEURL3:JSON.stringify("1+2"),
      BASEURL4:JSON.stringify("https://baidu.com"),
      OPTIONS:{
        AUTHOR:JSON.stringify('珠峰培训')
      }
    }),
    // new webpack.IgnorePlugin(/local/,/moment/) // 在打包的时候忽略moment下的local这个文件夹
  ],
  resolve:{
    modules:[path.resolve(__dirname,'./src/utils'),'node_modules']
  },
  resolveLoader:{
    // 加载loader默认是在 node_modules中查找

    modules:['node_modules','./my']
  },
  module:{
    noParse:/jquery|lodash/, // 明确告诉webpack 这俩包不依赖其他任何包
    rules:[
      {
        test:/\.js$/,
        exclude:/node_modules/,
        use:'loader'
      }
    ]
  },
  optimization:{
    splitChunks:{
      chunks:"all",
      minSize:5000, // 最小5kb
      minChunks:1,
      name:true,
      cacheGroups:{
        // 缓存组，符合这些条件生成的包 在后续到爆的过程中可以直接走这个缓存 
        jquery123:{
          // name:"jquery123",
          filename:'[name].bbb.js',
          test:/jquery/,
          chunks:'initial',
        },
        moment:{
          filename:'[name].bbb.js',
          test:/moment/,
          chunks:'initial',
        }
      }
    }
  },
  devServer:{
    contentBase:'dist', // 就是说 让webpack 把dist中的内容也当作服务器提供的资源文件
  }
}